package wci.intermediate.icodeimpl;

import wci.intermediate.ICodeNodeType;

/**
 * <h1>ICodeNodeType</h1>
 *
 * <p>节点类型</p>
 *
 * <p>Copyright (c) 2009 by Ronald Mak</p>
 * <p>For instructional purposes only.  No warranties.</p>
 */
public enum ICodeNodeTypeImpl implements ICodeNodeType
{
    PROGRAM/*单个pas文件*/, PROCEDURE/*过程*/, FUNCTION/*函数，有返回值*/,

    COMPOUND/*复合语句*/, ASSIGN/*赋值语句*/, LOOP/*循环*/, TEST/*循环条件*/, CALL/*过程/函数调用*/, PARAMETERS/*函数参数*/,
    IF/*条件语句*/, SELECT/*选择语句*/, SELECT_BRANCH/*选择分支*/, SELECT_CONSTANTS/*选择常量，选择里用的标识符只能是常量*/, NO_OP/*空语句*/,

    EQ/*等于=*/, NE/*不等于<>*/, LT/*小于<*/, LE/*小于等于<=*/, GT/*大于>*/, GE/*大于等于>=*/, NOT/*NOT相当于!*/,
    
    /*加法类运算符*/
    ADD, SUBTRACT, OR, NEGATE,

    // 乘法类运算符*/
    MULTIPLY, INTEGER_DIVIDE, FLOAT_DIVIDE, MOD, AND,

    // 操作数
    VARIABLE/*变量*/, SUBSCRIPTS/*数组下标*/, FIELD/*Record(记录)中的域*/,
    INTEGER_CONSTANT/*整数常量*/, REAL_CONSTANT/*浮点数常量*/,
    STRING_CONSTANT/*字符串常量*/, BOOLEAN_CONSTANT/*布尔常量true/false*/,

    //I/O参数
    WRITE_PARM,
}
